UP | HOME

The Basics of Autotools

目录

Major Autotools Components

Autotools 是相关软件包的集合,这些软件包一起使用时,可以消除创建可移植软件时遇到的许多困难。这些工具和一些相对简单的上游提供的输入文件以其,用于为软件包创建构建系统。

autotools_diagram.png

图1  A basic overview of how the main autotools components fit together.

A basic overview of how the main autotools components fit together.

在一个简单的设置中:

  • autoconf 程序从 configure.inconfigure.ac 中产生 configure 脚本(见下面的 NOTE)。
  • automake 程序从 Makefile.am 中产生 Makefile.in
  • configure 脚本从 Makefile.in 文件中产生一个或多个 Makefile 文件。
  • make 程序使用 Makefile 来编译程序。

NOTE: configure.in 名字曾经是标准。然而,GNU 文档现在建议使用 configure.ac 因为当处理它时会更清楚该使用哪个程序。两个文件具有相同的用途并且具有相同的格式 —— 唯一的区别时名称。

你可能会看到在各个阶段函数都使用了 autotools。src_prepare 函数时在配置和编译之前处理源代码的最适合的位置。特别是,src_prepare 在 src_cofigure 之前调用,src_cofigure 通常期望 configure 脚本存在。

autoreconf 工具据推测可以根据需要运行 autoconf (以及 automakeautoheaderaclocalautopointlibtoolize )。有时运行起来没问题。一些软件包附带了一个名为 autogen.sh 的 shell 脚本,该脚本会执行相同的操作(与 autogen 无关)。autotools.eclass 包含了与它们名字对应的独立工具的 helper 函数,例如 eautoconfeautomake

Warning:你必须不能尝试修改在运行 configuremake 之间生成的任何文件。这可能会导致 autotools 尝试变得更加聪明并且重建文件,进而导致你的更改被删除。在一些情况下,这还会导致 ./configure 参数被悄然删除,这可能会破坏依赖关键。最佳的的处理方法通常是改用 .ac=/=.in 文件。

The configure.ac File

configure.ac 文件用来创建 /.configure 脚本。它包括一系列由 autoconf 处理和展开的宏。这些宏可以检查软件包和库,处理 --enable--with 的切换,并且生成各种文件。

Further Autotools Reading

作者: Petrus.Z

Created: 2021-09-01 Wed 00:38